package cn.hinglo.baseservice.base;

import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;


/**
 * 继承自己的BaseMapper
 *
 * @author HingLo
 * @since 2015-09-06 21:53
 */
public interface BaseMapper<T> extends Mapper<T>, MySqlMapper<T> {
    // 特别注意，该接口不能被扫描到，否则会出错

    /**
     * 默认乐观锁删除影响行数为0的时候处理
     *
     * @param t t
     * @return 返回结果
     */
    default int deleteWithVersion(T t) {
        int result = delete(t);
        if (result == 0) {
            throw new RuntimeException("数据库操作异常,删除失败");
        }
        return result;
    }

    /**
     * 默认乐观锁更新行数影响为0的时候默认处理
     *
     * @param t t
     * @return 返回影响行数
     */
    default int updateByPrimaryKeyWithVersion(T t) {
        int result = updateByPrimaryKey(t);
        if (result == 0) {
            throw new RuntimeException("数据库操作异常,删除失败");
        }
        return result;
    }

}
